
#include 	"main.h"



/********************************************************
**函数名：	BSW_LPIT_INIT
**功能：		初始化LPIT模块
**输入参数：u32_ChNum      设置的配置的通道号
**					clockSource		 时钟源
**					u32_Per_value  周期计数值
**返回值：	无
**注意：		例如: u32_ChNum : LPIT_CH0
**					clockSource = 6 -- SPLLDIV2_CLK
**					u32_Per_value = 56000 
*********************************************************/
void BSW_LPIT_INIT(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg)
{
	PCC_SetClockMode(PCC, LPIT0_CLK, false);
	PCC_SetPeripheralClockControl(PCC, LPIT0_CLK, true, Lpit_Ch_Cfg.u32_clockSource, 0, 0);
	PCC_SetClockMode(PCC, LPIT0_CLK, true);
	
	LPIT_Enable(LPIT0); /* 启动定时器     */
	LPIT_SetTimerPeriodByCount(LPIT0, Lpit_Ch_Cfg.u32_ChNum, Lpit_Ch_Cfg.u32_Per_value);    /* 设置计数周期值 */
	LPIT_SetTimerChannelModeCmd(LPIT0, Lpit_Ch_Cfg.u32_ChNum, LPIT_PERIODIC_COUNTER);   /* 周期计数模式   */
}

/********************************************************
**函数名：	BSW_LPIT_EnableCh_IRQ
**功能：		启动定时器PIT 对应通道的中断
**输入参数：u32_mask 决定使能哪个通道
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/
void BSW_LPIT_EnableCh_IRQ(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg)
{
	INT_SYS_EnableIRQ(Lpit_Ch_Cfg.Ch_IRQn);
	LPIT_EnableInterruptTimerChannels(LPIT0,Lpit_Ch_Cfg.u32_mask);      /* 使能中断 */
}

/********************************************************
**函数名：	BSW_LPIT_DisableCh_IRQ
**功能：		关闭定时器PIT 对应通道的中断
**输入参数：u32_mask 决定关闭哪个通道
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/
void BSW_LPIT_DisableCh_IRQ( Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg)
{
	
	INT_SYS_DisableIRQ(Lpit_Ch_Cfg.Ch_IRQn);
	LPIT_DisableInterruptTimerChannels(LPIT0,Lpit_Ch_Cfg.u32_mask);  /* 关闭中断 */
}

/********************************************************
**函数名：	BSW_LPIT_Start_Ch
**功能：		启动定时器PIT 对应的通道
**输入参数：u32_mask 设置的配置的通道号
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/
 inline void BSW_LPIT_Start_Ch(Bsw_IPIT_Init_Cfg  Lpit_Ch_Cfg)
{
	LPIT_StartTimerChannels(LPIT0, Lpit_Ch_Cfg.u32_mask);   /* 启动定时器通道 */
}

/********************************************************
**函数名：	BSW_LPIT_Stop_Ch
**功能：	  停止定时器通道
**输入参数：u32_mask 决定关闭哪个通道
**返回值：	无
**注意：		例如: u32_mask : LPIT_CH0_MASK
*********************************************************/

inline void BSW_LPIT_Stop_Ch(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg)
{
	LPIT_StopTimerChannels(LPIT0, Lpit_Ch_Cfg.u32_mask);    /* 停止定时器通道 */ 
}

/********************************************************
**函数名：	BSW_LPIT_SET_Period
**功能：	  设置计数器周期值
**输入参数：u32_Per_value
**返回值：	无
**注意：		例如: u32_Per_value : 56000
*********************************************************/
inline void BSW_LPIT_SET_Period(Bsw_IPIT_Init_Cfg Lpit_Ch_Cfg)
{
	LPIT_SetTimerPeriodByCount(LPIT0, Lpit_Ch_Cfg.u32_ChNum, Lpit_Ch_Cfg.u32_Per_value);    /* 设置计数周期值 */
}

/********************************************************
**函数名：	LPIT0_Ch0_IRQHandler
**功能：		LPIT0_ch0中断函数入口
**输入参数：无
**返回值：	无
**注意：		
*********************************************************/
void LPIT0_Ch0_IRQHandler(void) 
{	
	LPIT_ClearInterruptFlagTimerChannels(LPIT0, LPIT_CH0_MASK); /* 清除LPIT通道标识 */
	LPIT0_CH0_IRQ();
}

/********************************************************
**函数名：	LPIT0_Ch1_IRQHandler
**功能：		LPIT0_ch1中断函数入口
**输入参数：无
**返回值：	无
**注意：		
*********************************************************/
void LPIT0_Ch1_IRQHandler(void) 
{
	LPIT_ClearInterruptFlagTimerChannels(LPIT0, LPIT_CH1_MASK); /* 清除LPIT通道标识 */
	LPIT0_CH1_IRQ();
}


